package com.zg.system.auth.service;

import com.zg.common.core.dao.auth.AuthOrg;

/**
 * @author Zxb
 */
public interface AuthOrgService {
    String generateNewName(Long pid);
    /**
     * 名称是否冲突
     * @param id 当前组织id
     * @param name 当前组织名称
     * @return 是否冲突
     */
    Boolean isNameConflict(Long id, String name);
    /**
     * 编码是否冲突
     * @param id 当前组织id
     * @param code 当前组织编码
     * @return 是否冲突
     */
    Boolean isCodeConflict(Long id, String code);
    /**
     * 查询最大序号
     * @param pid 父节点ID
     * @return 最大序号
     */
    Integer findMaxSort(Long pid);

    /**
     * 移动一个组织到另一个组织内部
     * @param dragObj 目的组织
     * @param dropObj 移动组织
     */
    void moveInner(AuthOrg dragObj, AuthOrg dropObj);

    /**
     * 移动一个组织到另一个组织前面
     * @param dragObj 目的组织
     * @param dropObj 移动组织
     */
    void moveBefore(AuthOrg dragObj, AuthOrg dropObj);

    /**
     * 移动一个组织到另一个组织后面
     * @param dragObj 目的组织
     * @param dropObj 移动组织
     */
    void moveAfter(AuthOrg dragObj, AuthOrg dropObj);
    /**
     * 更新ID和NAME链路
     * @param org 当前组织
     */
    void generateLink(AuthOrg org);
}
